# 阻塞式:添加一个执行一个任务，如果一个任务不结束另一个任务就进不来
'''
进程池：
pool = Pool(max) # 创建进程池，最大进程数
pool.apply() 阻塞的
pool.apply_async() 非阻塞的

pool.close() # 添加任务结束
pool.join() # 等待进程池中的任务执行完毕
'''
import os
from multiprocessing import Pool
import time

# 非阻塞式进程
from random import random

def tack(task_name):
    print('开始做任务了',task_name)
    start = time.time()
    time.sleep(random()*2)
    end = time.time()
    print('完成任务:{}!,用时:{},进程id:{}'.format(task_name,end-start,os.getpid()))
    # return '任务:{}!,用时:{},进程id:{}'.format(task_name,end-start,os.getpid())


if __name__ == '__main__':
    pool = Pool(5)
    tasks = ['听音乐', '看电影', '打游戏', '写代码', '写论文', '做作业', '写小说']
    for task1 in tasks:
        pool.apply(tack, args=(task1,))
    pool.close()  # 添加任务结束
    pool.join()  # 等待进程池中的任务执行完毕

    print('主进程结束')
